#include <iostream>
#include <cstring>

using namespace std;

//链接：https://www.acwing.com/problem/content/3766/

//由于每次能改变相邻的两个数，因此，可以通过若干次操作，
//让矩阵中任意两个数都变号，而其他数不变
//所以。
//当矩阵中有偶数个非正整数时，
//  可以让偶数个非正数都变号，从而时和最大，此时res为所有元素的abs总和
//当矩阵中有奇数个非正整数时，
//  可以让找出绝对值最小的一个数作为负数，从而使得和最大，
//  此时res为所有元素的abs总和 - 2 * abs(minNum)

int main(){
    int t,n,m;
    cin >> t;
    while (t--){
        cin >> n >> m;
        int res = 0;
        int minNum = 0x3f3f3f;
        int cnt = 0;
        int temp;
        for (int i = 0; i < n; i++){
            for (int j = 0; j < m; j++){
                cin >> temp;
                if (temp <= 0)cnt ++;
                res += abs(temp);
                minNum = min(minNum,abs(temp));
            }
        }
        if (cnt & 1)res = res - 2 * minNum;
        cout << res << endl;
    }
    return 0;
}